﻿#define _CRT_SECURE_NO_WARNINGS 1

//氧气少年有n 张数字卡片，每张数字卡片上写着一个数字，保证每张卡片上的数字只有一位。
//氧气少年想让你将这些卡片从左到右拼成一行，组成一个n 位数字。这n 位数字需要满足下面的条件：
//该数字是
//10 的倍数；
//该数字尽可能大；
//该数字允许有前导零。
//
//请求出这n 位数字，或者告诉氧气少年无法拼出满足条件的数字。
//输入描述 :
//第一行包含一个整数n(1≤n≤8)，表示数字卡片的数量。
//第二行包含n 个整数，每个整数的大小在0和9 之间。
//输出描述 :
//仅输出一行。如果无法拼出满足条件的数字，输出−1，否则请输出这n 位数字。
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* a, const void* b) {
	return *(int*)a - *(int*)b;
}

int main()
{
	int n, a[1000], i;
	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	qsort(a, n, sizeof(int), cmp);
	if (a[0] != 0)
		printf("-1\n");
	else {
		for (i = n - 1; i >= 0; i--) {
			printf("%d", a[i]);
		}
		printf("\n");
	}
	return 0;
}